/*
 * @lc app=leetcode.cn id=496 lang=javascript
 *
 * [496] 下一个更大元素 I
 */

// @lc code=start
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
// var nextGreaterElement = function(nums1, nums2) {
//   let q = [];
//   let maxQ = new Map();
//   for (let i = 0; i < nums2.length; i++) {
//     while(q.length && nums2[i] > nums2[q[q.length - 1]]) {
//       // maxQ.set(nums2[q[q.length - 1]],  nums2[i]);
//       // q.pop();
//       maxQ.set(nums2[q.pop()],  nums2[i]);
//     }
//     q.push(i);
//   }
//   let ret = [];
//   for (let i = 0; i < nums1.length; i++) {
//     ret.push(maxQ.get(nums1[i]) || -1);
//   }
//   return ret;
// };

/**
 * 复习 2021-08-04
 */
var nextGreaterElement = function(nums1, nums2) {
  let que = []; let maxQeu = {};
  for (let i = 0; i < nums2.length; i++) {

    while(que.length && (nums2[i] > nums2[que[que.length - 1]])) {
      maxQeu[nums2[que[que.length - 1]]] = nums2[i];
      que.pop();
    }
    que.push(i)
  }

  let result = [];
  for (let i = 0; i < nums1.length; i++) {
    result[i] = maxQeu[nums1[i]] || -1;
  }
  return result;

}
// @lc code=end

